import java.util.ArrayList;
import java.util.List;

/**
 * 学生类：继承Person父类
 */
public class Student extends Person {
    // 子类特有属性（private修饰：仅本类可访问）
    private List<String> courseIds = new ArrayList<>();  // 所选课程编号列表

    // 子类构造方法：通过super()调用父类构造
    public Student(String id, String name, String gender) {
        super(id, name, gender);  // 必须位于第一行，传递父类参数
    }

    // 学生特有方法：选课
    public void selectCourse(String courseId) {
        courseIds.add(courseId);
        System.out.println(name + " 成功选修课程：" + courseId);
    }

    // 学生特有方法：退课
    public void dropCourse(String courseId) {
        if (courseIds.remove(courseId)) {
            System.out.println(name + " 成功退选课程：" + courseId);
        } else {
            System.out.println(name + " 未选修该课程：" + courseId);
        }
    }

    // 重写父类方法：打印学生课表
    @Override
    public void printWorkSheet() {
        super.printWorkSheet();  // 复用父类基础信息打印逻辑
        System.out.println("身份：学生");
        System.out.println("所选课程编号：" + (courseIds.isEmpty() ? "无" : courseIds));
        System.out.println("=============\n");
    }

    // Getter方法：供外部访问private属性
    public List<String> getCourseIds() {
        return courseIds;
    }
}